//
//  YJComicsView.h
//  M-Y
//

#import <UIKit/UIKit.h>

#import "YJChapterInfo.h"
#import "YJComicsSetting.h"
#import "YJError.h"


@class YJComicsView;

@protocol YJComicsDelegate <NSObject>

@required


/**
 观看进度回调
 
 @param comicsView 自定义view
 @param index 图片在章节中所处的索引
 @param count 章节的总图片数
 @param chapterNum 章节ID
 */
- (void)comicsView:(YJComicsView *)comicsView progressWithImageIndex:(NSInteger)index imageCount:(NSInteger)count chapterNum:(NSInteger)chapterNum;

/**
 更新新的章节数据回调
 
 @param comicsView sdk view
 @param chapterNum 需要的新章节数据对应的ID 若是小于1或超出范围 业务方判断是否有对应的章节数据
 */
- (void)comicsView:(YJComicsView *)comicsView needChapterInfoWithNum:(NSInteger)chapterNum;


/**
 第一次进入图片下载状态
 
 @param comicsView sdk view
 @param loadingSuccess 下载状态 YES成功 NO失败
 */
- (void)comicsView:(YJComicsView *)comicsView loadingSuccess:(BOOL)loadingSuccess;


@optional

/**
 阅读时出错回调(数据异常)
 
 @param comicsView sdk view
 @param error 错误code
 */
//- (void)comicsView:(YJComicsView *)comicsView readFailWithError:(YJError *)error;

- (void)comicsView:(YJComicsView *)comicsView imageIndex:(NSInteger)imageIndex;

@end

@interface YJComicsView : UIView

@property (nonatomic, assign) id<YJComicsDelegate>delegate;

/**
 初始化方法
 @param comicsInfo 含有数组的model 还有当时的章节名 或者章节ID
 @param imgIndex 从第几个开始看起
 */
+ (instancetype)startReadComics:(YJChapterInfo *)comicsInfo currentImageIndex:(NSInteger)imgIndex setting:(YJComicsSetting *)setting;


/**
 更新 即加入新数据（上一章节下一章节）
 @param chapterInfo 传入对应的array数组
 */
- (void)setChapterInfo:(YJChapterInfo *)chapterInfo;


/**
 更改设置

 @param setting 传入设置YJComicsSetting对象
 */
- (void)updateSetting:(YJComicsSetting *)setting;


/**
 上一张图片
 */
- (void)scrollToPreImage;

/**
 下一张图片
 */

- (void)scrollToNextImage;


/**
 清理内存
 */
- (void)clearMemory;


/**
 双击放大缩小 只限在左右整页滑动时才具有缩放的效果 

 @param tap 传入的UIGestureRecognizer对象
 */
- (void)doubleTapView:(UIGestureRecognizer *)tap;


/**
 用滑动条滑动到制定的某一张图片
 
 @param imgIndex 传入该图片的index值
 */

- (void)sliderScrollToIndexImage:(NSInteger)imgIndex;



/**
 从指定章节进行重新阅读（比如VIP购买情况等，针对界面还是在同一VC的情况）

 @param chapterInfo 对应的章节信息
 */

- (void)replaceChapterInfo:(YJChapterInfo *)chapterInfo;


@end
